package uk.ac.sanger;

import java.util.List;

public interface DataManagerInterface {

	/** delete feature
     * @param array of type FeatureBean 
     * @param coordinate system URI
     * @output result of operation */
	public String deleteFeature(FeatureBean[] features, 
            				    String coordinateSystemURI);
    
	/** get all features from this coordinate system
     * @param coordinate system URI
     * @output array of features */
    public FeatureBean[] getAllFeatures(String coordinateSystemURI);

    /** get feature by id
     * @param feature id
     * @param coordinate system URI
     * @output one feature */
    public FeatureBean getFeatureById(String feature_id,
                         	          String coordinateSystemURI);
    
    /** get all groups for this coordinate system
     * @param coordinate system URI
     * @output list of groups */
    public List getGroups(String coordinateSystemURI);

    /** get history of modifications for one feature
     * @param feature id 
     * @param coordinate system URI
     * @output all modifications of the feature */
    public FeatureBean[] getHistoryById(String feature_id,
      	   					            String coordinateSystemURI);
    /** convert coordinate system URI into key-id
     * @param coordinate system URI
     * @output key-id */
    public int getIdFromUri(String uri);
    
    /** save new coordinate system
     * @param array of coordinate system data 
     * @output none */
    public void saveCoordinate( String[][] coordinates);
    
    /** save feature
     * @param array of type FeatureBean 
     * @param coordinate system URI
     * @output result of operation */
    public String saveFeature(FeatureBean[] features, 
            				  String coordinateSystemURI);
   
    /** save a new group
     * @param list group data 
     * @param coordinate system URI
     * @output none */
    public void saveGroups(List groups,
    		               String coordinateSystemURI);

    /** delete group
     * @param list group data 
     * @param coordinate system URI
     * @output none */
    public void deleteGroup(String group,
    		                String coordinateSystemURI);

    /** update feature
     * @param array of type FeatureBean 
     * @param coordinate system URI
     * @output none */
    public String updateFeature(FeatureBean[] features, 
            String coordinateSystemURI);

    /** get group by groupid
     * @param groupid
     * @param coordinate system URI
     * @output one attribute */
    public String getAttributeById(String groupid,
                         	            String coordinateSystemURI);

    /** get features by groupid
     * @param groupid
     * @param coordinate system URI
     * @output one attribute */
    public FeatureBean[] getFeaturesByGroup(String groupid,
                         	         String coordinateSystemURI);

}
